Make Maintenance::commitTransaction() avoid using deprecated method
authorAaron Schulz <aschulz@wikimedia.org>
Tue, 6 Sep 2016 01:46:11 +0000 (18:46 -0700)
committerAaron Schulz <aschulz@wikimedia.org>
Tue, 6 Sep 2016 01:46:11 +0000 (18:46 -0700)
Change-Id: I0bbbdf492265f05ede4864aca0b4df15c3e83754

maintenance/Maintenance.php

index 0b61738..818eb93 100644 (file)
@@ -109,7 +109,7 @@ abstract class Maintenance {
        private $mDb = null;
 
        /** @var float UNIX timestamp */
-       private $lastSlaveWait = 0.0;
+       private $lastReplicationWait = 0.0;
 
        /**
         * Used when creating separate schema files.
@@ -1276,11 +1276,17 @@ abstract class Maintenance {
         */
        protected function commitTransaction( IDatabase $dbw, $fname ) {
                $dbw->commit( $fname );
+               try {
+                       $lbFactory = MediaWikiServices::getInstance()->getDBLoadBalancerFactory();
+                       $lbFactory->waitForReplication(
+                               [ 'timeout' => 30, 'ifWritesSince' => $this->lastReplicationWait ]
+                       );
+                       $this->lastReplicationWait = microtime( true );
 
-               $ok = wfWaitForSlaves( $this->lastSlaveWait, false, '*', 30 );
-               $this->lastSlaveWait = microtime( true );
-
-               return $ok;
+                       return true;
+               } catch ( DBReplicationWaitError $e ) {
+                       return false;
+               }
        }
 
        /**